//=====================================================================
//    COPYRIGHT(C) Innobeam
//    ALL RIGHTS RESERVED
//=====================================================================
//Filename    : LCD_RESET.v
//Created On  : 2019-01-02
//Author      : haoyu.xiao
//Description : LCD hardware reset
//Include     : 
//Modification: 
//=====================================================================
module LCD_RESET(
	iClk,
	iRst_n,

	oRst_n
	);
//========================================================================
//    parameter
//========================================================================
parameter		HOLD_TIME = 32'd32_000;
parameter		FLATTOP_TIME = 32'd60_000;

//========================================================================
//    port
//========================================================================	
	input					iClk;
	input					iRst_n;
	
	output					oRst_n;
//========================================================================
//    signal
//========================================================================
	reg						rHold;
	reg		[31:0]			rvCnt_hold;

//========================================================================	
assign oRst_n = rHold;
always@(posedge iClk or negedge iRst_n)begin
	if(iRst_n==1'b0)begin
		rHold <= 1'b0;	
		rvCnt_hold <= 32'd0;
		end
	else begin
		if(rvCnt_hold < HOLD_TIME)begin
			rvCnt_hold <= rvCnt_hold+1'b1;
			rHold <= 1'b1;
			end
		if(rvCnt_hold < FLATTOP_TIME && rvCnt_hold >= HOLD_TIME)begin
			rvCnt_hold <= rvCnt_hold+1'b1;
			rHold <= 1'b0;
			end
		else begin
			rvCnt_hold <= rvCnt_hold;
			rHold <= 1'b1;	
			end
		end
	end	
endmodule